package models

import (
	"time"

	"gorm.io/gorm"
)

// Announcement 公告模型
type Announcement struct {
	gorm.Model
	ID          uint       `json:"id" gorm:"primaryKey"`
	Title       string     `json:"title" gorm:"size:200;not null"`        // 公告标题
	Content     string     `json:"content" gorm:"type:text;not null"`     // 公告内容
	Type        string     `json:"type" gorm:"size:50;default:'info'"`    // 公告类型: info, warning, error, success
	Status      string     `json:"status" gorm:"size:20;default:'draft'"` // 状态: draft, published, archived
	Priority    int        `json:"priority" gorm:"default:0"`             // 优先级: 0-普通, 1-重要, 2-紧急
	AuthorID    uint       `json:"author_id" gorm:"not null"`             // 发布者ID
	AuthorName  string     `json:"author_name" gorm:"size:100"`           // 发布者姓名
	PublishTime *time.Time `json:"publish_time"`                          // 发布时间
	ExpireTime  *time.Time `json:"expire_time"`                           // 过期时间
	CreatedAt   time.Time  `json:"created_at"`
	UpdatedAt   time.Time  `json:"updated_at"`
}

// SystemLog 系统日志模型
type SystemLog struct {
	gorm.Model
	ID        uint      `json:"id" gorm:"primaryKey"`
	UserID    uint      `json:"user_id"`                         // 操作用户ID
	Action    string    `json:"action" gorm:"size:100;not null"` // 操作类型
	Resource  string    `json:"resource" gorm:"size:100"`        // 操作资源
	Details   string    `json:"details" gorm:"type:text"`        // 操作详情
	IPAddress string    `json:"ip_address" gorm:"size:45"`       // IP地址
	UserAgent string    `json:"user_agent" gorm:"type:text"`     // 用户代理
	CreatedAt time.Time `json:"created_at"`
}

// UserStats 用户统计模型
type UserStats struct {
	TotalUsers    int `json:"total_users"`     // 总用户数
	ActiveUsers   int `json:"active_users"`    // 活跃用户数
	AdminUsers    int `json:"admin_users"`     // 管理员数量
	BannedUsers   int `json:"banned_users"`    // 被封禁用户数
	NewUsersToday int `json:"new_users_today"` // 今日新用户
}

// GetAnnouncementTypes 获取公告类型列表
func GetAnnouncementTypes() []map[string]string {
	return []map[string]string{
		{"value": "info", "label": "系统通知", "color": "#2196F3"},
		{"value": "warning", "label": "功能更新", "color": "#FF9800"},
		{"value": "error", "label": "维护公告", "color": "#F44336"},
		{"value": "success", "label": "活动通知", "color": "#4CAF50"},
	}
}

// GetAnnouncementStatuses 获取公告状态列表
func GetAnnouncementStatuses() []map[string]string {
	return []map[string]string{
		{"value": "draft", "label": "草稿", "color": "#9E9E9E"},
		{"value": "published", "label": "已发布", "color": "#4CAF50"},
		{"value": "archived", "label": "已归档", "color": "#607D8B"},
	}
}
